home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / personal / fc301e.zip / INSTALL.MS_ / INSTALL.bin
Text File  |  1996-01-14  |  19KB  |  649 lines

  1.  
  2.  
  3. '**************************************************************************
  4. '*                       Full Contact Gold Installation
  5. '**************************************************************************
  6.  
  7. '$DEFINE DEBUG  ''Define for script development/debugging
  8.  
  9. '$INCLUDE 'setupapi.inc'
  10. '$INCLUDE 'msdetect.inc'
  11.  
  12. ''Dialog ID's
  13. CONST SW_SHOWMAXIMIZED=3
  14. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  15. CONST BILL1        = 105
  16. CONST BILL2        = 106
  17. CONST BILL3        = 107
  18. CONST BILL4        = 108
  19. CONST BILL5        = 109
  20. CONST BILL6        = 110
  21. CONST BILL7        = 111
  22. CONST BILL8        = 112
  23. CONST BILL9        = 113
  24. CONST BILL10       = 114
  25. CONST WELCOME      = 100
  26. CONST ASKQUIT      = 200
  27. CONST DESTPATH     = 300
  28. CONST EXITFAILURE  = 400
  29. CONST EXITQUIT     = 600
  30. CONST EXITSUCCESS  = 700
  31. CONST OPTIONS      = 800
  32. CONST APPHELP      = 900
  33. CONST CUSTINST     = 6200
  34. CONST CDCONFIRMINFO = 7300
  35. CONST CDGETNAME     = 7400
  36. CONST CDGETNAMEORG  = 7500
  37. CONST CDGETORG      = 7600
  38. CONST UPDATEFILES    = 9900
  39. CONST TOOBIG       = 6300
  40. CONST BADPATH      = 6400
  41. CONST CHANGEPASSWORD = 9800
  42. CONST PASSWORDHELP = 1006
  43. CONST USERPROFILEHELP = 104
  44. ''Bitmap ID
  45. CONST LOGO         = 1
  46.  
  47. ''File Types
  48. CONST APPFILES     = 1
  49. CONST OPTFILES1    = 2
  50. CONST OPTFILES2    = 3
  51. CONST OPTFILES3    = 4
  52. CONST INSTALL      = 1
  53. CONST CHANGE       = 2
  54. CONST CLIENT       = 3
  55.  
  56. GLOBAL DEST$        ''Default destination directory.
  57. GLOBAL WINDRIVE$    ''Windows drive letter.
  58. GLOBAL OPT1OPT$     ''Option selection from OptFiles1 option dialog.
  59. GLOBAL OPT2OPT$     ''Option selection from OptFiles2 option dialog.
  60. GLOBAL OPT3OPT$     ''Option selection from OptFiles3 option dialog.
  61.  
  62. ''CustInst list symbol names
  63. GLOBAL APPNEEDS$    ''Option list costs per drive
  64. GLOBAL OPT1NEEDS$
  65. GLOBAL OPT2NEEDS$
  66. GLOBAL OPT3NEEDS$
  67. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  68. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  69.  
  70. ''Dialog list symbol names
  71. GLOBAL CHECKSTATES$
  72. GLOBAL STATUSTEXT$
  73. GLOBAL DRIVETEXT$
  74. GLOBAL INSTTYPE$
  75.  
  76.  
  77. DECLARE SUB AddOptFilesToCopyList (ftype%)
  78. DECLARE SUB RecalcOptFiles (ftype%)
  79. DECLARE SUB RecalcPath
  80. DECLARE SUB SetDriveStatus
  81. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  82.  
  83.  
  84.  
  85. INIT:
  86.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  87.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  88.  
  89.     SetBitmap CUIDLL$, LOGO
  90.     SetTitle "Full Contact Installation"
  91.     hWnd%=HwndFrame()
  92.     junk%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  93.     
  94.     AddToBillboardList CUIDLL$, BILL1 , "FModelessDlgProc" , 1
  95.     AddToBillboardList CUIDLL$, BILL2 , "FModelessDlgProc" , 1
  96.     AddToBillboardList CUIDLL$, BILL3 , "FModelessDlgProc" , 1
  97.     AddToBillboardList CUIDLL$, BILL4 , "FModelessDlgProc" , 1
  98.     AddToBillboardList CUIDLL$, BILL5 , "FModelessDlgProc" , 1
  99.     AddToBillboardList CUIDLL$, BILL6 , "FModelessDlgProc" , 1
  100.     AddToBillboardList CUIDLL$, BILL7 , "FModelessDlgProc" , 1
  101.     AddToBillboardList CUIDLL$, BILL8 , "FModelessDlgProc" , 1
  102.     AddToBillboardList CUIDLL$, BILL9 , "FModelessDlgProc" , 1
  103.     AddToBillboardList CUIDLL$, BILL10 , "FModelessDlgProc" , 1
  104.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  105.     IF szInf$ = "" THEN
  106.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  107.     END IF
  108.     ReadInfFile szInf$
  109.  
  110.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  111.     DEST$ = WINDRIVE$ + ":\FC"
  112.  
  113.     ''CustInst list symbols
  114.     CHECKSTATES$ = "CheckItemsState"
  115.     STATUSTEXT$  = "StatusItemsText"
  116.     DRIVETEXT$   = "DriveStatusText"
  117.     INSTTYPE$   = "InstallationType"
  118.     FOR i% = 1 TO 3 STEP 1
  119.         AddListItem INSTTYPE$, "ON"
  120.     NEXT i%
  121.     FOR i% = 1 TO 5 STEP 1
  122.         AddListItem CHECKSTATES$, "ON"
  123.     NEXT i%
  124.     FOR i% = 1 TO 5 STEP 1
  125.         AddListItem STATUSTEXT$, ""
  126.     NEXT i%
  127.     FOR i% = 1 TO 7 STEP 1
  128.         AddListItem DRIVETEXT$, ""
  129.     NEXT i%
  130.     ReplaceListItem DRIVETEXT$, 7, DEST$
  131.     ReplaceListItem INSTTYPE, 1, "ON"
  132.     ReplaceListItem INSTTYPE, 2, "OFF"
  133.  
  134.     ''Disk cost list symbols
  135.     APPNEEDS$   = "AppNeeds"
  136.     OPT1NEEDS$  = "Opt1Needs"
  137.     OPT2NEEDS$  = "Opt2Needs"
  138.     OPT3NEEDS$  = "Opt3Needs"
  139.     EXTRACOSTS$ = "ExtraCosts"
  140.     BIGLIST$    = "BigList"
  141.     FOR i% = 1 TO 5 STEP 1
  142.         AddListItem BIGLIST$, ""
  143.     NEXT i%
  144.     FOR i% = 1 TO 26 STEP 1
  145.         AddListItem EXTRACOSTS$, "0"
  146.     NEXT i%
  147.  
  148.     ''File Option Variables
  149.     OPT1OPT$ = "1"
  150.     OPT2OPT$ = "1"
  151.     OPT3OPT$ = "1"
  152.  
  153.     RecalcPath
  154.     SetDriveStatus
  155.  
  156. '$IFDEF DEBUG
  157.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  158. '$ENDIF ''DEBUG
  159.  
  160. WELCOME:
  161.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FWelcomeDlgProc", PASSWORDHELP, HELPPROC$)
  162.     IF sz$ = "EXIT" THEN
  163.       GOSUB ASKQUIT
  164.       GOTO WELCOME
  165.     END IF  
  166.     IF GetListItem(INSTTYPE$, CLIENT) = "ON" THEN 
  167.        GOTO CUSTINST
  168.     END IF
  169.     IF GetListItem(INSTTYPE$, INSTALL) = "ON" THEN 
  170.        GOTO CUSTINST
  171.     END IF
  172.     IF GetListItem(INSTTYPE$, CHANGE) = "ON" THEN 
  173.        GOTO UPDATEPASSWORD
  174.     END IF                
  175. UPDATEPASSWORD:
  176. ' Update existing password
  177.     sz$ = UIStartDlg(CUIDLL$, CHANGEPASSWORD, "FUpdatePasswordDlgProc", APPHELP, HELPPROC$)
  178.     IF sz$ = "CONTINUE" THEN
  179.       GOTO CHANGEPASSWORD
  180.     END IF
  181.     IF sz$ = "EXIT" THEN
  182.       GOTO QUIT
  183.     END IF
  184.     IF sz$ = "CONTINUE" THEN
  185.       GOTO CHANGEPASSWORD
  186.     END IF
  187.  
  188. CHANGEPASSWORD:
  189.    GOTO QUIT
  190.     
  191. CUSTINST:
  192.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", USERPROFILEHELP, HELPPROC$)
  193.     IF sz$ = "EXIT" THEN
  194.       GOSUB ASKQUIT
  195.       GOTO CUSTINST
  196.     ELSEIF sz$ = "CONTINUE" THEN
  197.         ''Install only if it will fit.
  198.         FOR i% = 1 TO 4 STEP 1
  199.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  200.                 GOSUB TOOBIG
  201.                 GOTO CUSTINST
  202.             END IF
  203.         NEXT i%
  204.         UIPop 1
  205.         GOTO INSTALL
  206.     ELSEIF sz$ = "PATH" THEN
  207.         GOTO GETPATH
  208.     ELSEIF sz$ = "CHK1" THEN
  209.         RecalcOptFiles APPFILES
  210.         SetDriveStatus
  211.         GOTO CUSTINST
  212.     ELSEIF sz$ = "CHK2" THEN
  213.         RecalcOptFiles OPTFILES1
  214.         SetDriveStatus
  215.         GOTO CUSTINST
  216.     ELSEIF sz$ = "CHK3" THEN
  217.         RecalcOptFiles OPTFILES2
  218.         SetDriveStatus
  219.         GOTO CUSTINST
  220.     ELSEIF sz$ = "CHK4" THEN
  221.         RecalcOptFiles OPTFILES3
  222.         SetDriveStatus
  223.         GOTO CUSTINST
  224.     ELSEIF sz$ = "BTN2" THEN
  225.         GOTO OPTFILES1
  226.     ELSEIF sz$ = "BTN3" THEN
  227.         GOTO OPTFILES2
  228.     ELSEIF sz$ = "BTN4" THEN
  229.         GOTO OPTFILES3
  230.     ELSEIF sz$ = "REACTIVATE" THEN
  231.         RecalcPath
  232.         SetDriveStatus
  233.         GOTO CUSTINST
  234.     ELSE
  235.         GOSUB ASKQUIT
  236.         GOTO CUSTINST
  237.     END IF
  238.  
  239.  
  240. INSTALL:
  241.     ClearCopyList
  242.     AddOptFilesToCopyList APPFILES
  243.     AddOptFilesToCopyList OPTFILES1
  244.     AddOptFilesToCopyList OPTFILES2
  245.     AddOptFilesToCopyList OPTFILES3
  246.     CreateDir DEST$, cmoNone
  247.     CreateDir MakePath(DEST$,"print"), cmoNone
  248.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  249.     WriteToLogFile ""
  250.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  251.     WriteToLogFile ""
  252.     WriteToLogFile "May have had to create the directory: " + DEST$
  253.     WriteToLogFile ""
  254.     CopyFilesInCopyList
  255.  
  256.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  257.         CreateProgmanGroup "Full Contact", "", cmoNone
  258.         ShowProgmanGroup  "Full Contact", 1, cmoNone
  259.         CreateProgmanItem "Full Contact", "Full Contact", MakePath(DEST$,"fc.exe"), "", cmoOverwrite
  260.         CreateProgmanItem "Full Contact", "Help", MakePath(DEST$,"help\ccm.hlp"), "", cmoOverwrite
  261.         CreateProgmanItem "Full Contact", "Order", MakePath(DEST$,"help\order.hlp"), "", cmoOverwrite
  262.     END IF
  263.     IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  264.         CreateProgmanGroup "Full Contact", "", cmoNone
  265.         ShowProgmanGroup  "Full Contact", 1, cmoNone
  266.         CreateProgmanItem "Full Contact", "Personalisation", MakePath(DEST$,"dm.exe"), "", cmoOverwrite
  267.         CreateProgmanItem "Full Contact", "Personalisation Help", MakePath(DEST$,"help\cg.hlp"), "", cmoOverwrite
  268.     END IF
  269.     CloseLogFile
  270.  
  271. UPDATEDB:
  272.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", USERPROFILEHELP, HELPPROC$)
  273.  
  274. QUIT:
  275.     ON ERROR GOTO ERRQUIT
  276.  
  277.     IF ERR = 0 THEN
  278.         dlg% = EXITSUCCESS
  279.     ELSEIF ERR = STFQUIT THEN
  280.         dlg% = EXITQUIT
  281.     ELSE
  282.         dlg% = EXITFAILURE
  283.     END IF
  284. QUITL1:
  285.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  286.     IF sz$ = "REACTIVATE" THEN
  287.         GOTO QUITL1
  288.     END IF
  289.     UIPop 1
  290.  
  291.     END
  292.  
  293. ERRQUIT:
  294.     i% = DoMsgBox("Setup sources were corrupted, call 55.21.256-2464!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  295.     END
  296.  
  297.  
  298.  
  299. GETPATH:
  300.     SetSymbolValue "EditTextIn", DEST$
  301.     SetSymbolValue "EditFocus", "END"
  302. GETPATHL1:
  303.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  304.  
  305.     IF sz$ = "CONTINUE" THEN
  306.         olddest$ = DEST$
  307.         DEST$ = GetSymbolValue("EditTextOut")
  308.  
  309.         ''Validate new path.
  310.         IF IsDirWritable(DEST$) = 0 THEN
  311.             GOSUB BADPATH
  312.             GOTO GETPATHL1
  313.         END IF
  314.         UIPop 1
  315.  
  316.         ''Truncate display if too long.
  317.         IF LEN(DEST$) > 23 THEN
  318.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  319.         ELSE
  320.             ReplaceListItem DRIVETEXT$, 7, DEST$
  321.         END IF
  322.  
  323.         ''Recalc if path changed.
  324.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  325.             RecalcPath
  326.             SetDriveStatus
  327.         END IF
  328.  
  329.         olddest$ = ""
  330.         GOTO CUSTINST
  331.     ELSEIF sz$ = "REACTIVATE" THEN
  332.         RecalcPath
  333.         SetDriveStatus
  334.         GOTO GETPATHL1
  335.     ELSEIF sz$ = "EXIT" THEN
  336.         GOSUB ASKQUIT
  337.         GOTO GETPATHL1
  338.     ELSE
  339.         UIPop 1
  340.         GOTO CUSTINST
  341.     END IF
  342.  
  343.  
  344.  
  345. OPTFILES1:
  346.     SetSymbolValue "RadioDefault", OPT1OPT$
  347. OPT1L1:
  348.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  349.     newopt$ = GetSymbolValue("ButtonChecked")
  350.  
  351.     IF sz$ = "CONTINUE" THEN
  352.         UIPop 1
  353.         IF newopt$ <> OPT1OPT$ THEN
  354.             OPT1OPT$ = newopt$
  355.             RecalcOptFiles OPTFILES1
  356.             SetDriveStatus
  357.         END IF
  358.         newopt$ = ""
  359.         GOTO CUSTINST
  360.     ELSEIF sz$ = "REACTIVATE" THEN
  361.         RecalcPath
  362.         SetDriveStatus
  363.         GOTO OPT1L1
  364.     ELSEIF sz$ = "EXIT" THEN
  365.         GOSUB ASKQUIT
  366.         GOTO OPT1L1
  367.     ELSE
  368.         UIPop 1
  369.         newopt$ = ""
  370.         GOTO CUSTINST
  371.     END IF
  372.  
  373.  
  374.  
  375. OPTFILES2:
  376.     SetSymbolValue "RadioDefault", OPT2OPT$
  377. OPT2L1:
  378.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  379.     newopt$ = GetSymbolValue("ButtonChecked")
  380.  
  381.     IF sz$ = "CONTINUE" THEN
  382.         UIPop 1
  383.         IF newopt$ <> OPT2OPT$ THEN
  384.             OPT2OPT$ = newopt$
  385.             RecalcOptFiles OPTFILES2
  386.             SetDriveStatus
  387.         END IF
  388.         newopt$ = ""
  389.         GOTO CUSTINST
  390.     ELSEIF sz$ = "REACTIVATE" THEN
  391.         RecalcPath
  392.         SetDriveStatus
  393.         GOTO OPT2L1
  394.     ELSEIF sz$ = "EXIT" THEN
  395.         GOSUB ASKQUIT
  396.         GOTO OPT2L1
  397.     ELSE
  398.         UIPop 1
  399.         newopt$ = ""
  400.         GOTO CUSTINST
  401.     END IF
  402.  
  403.  
  404. OPTFILES3:
  405.     SetSymbolValue "RadioDefault", OPT3OPT$
  406. OPT3L1:
  407.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  408.     newopt$ = GetSymbolValue("ButtonChecked")
  409.  
  410.     IF sz$ = "CONTINUE" THEN
  411.         UIPop 1
  412.         IF newopt$ <> OPT3OPT$ THEN
  413.             OPT3OPT$ = newopt$
  414.             RecalcOptFiles OPTFILES3
  415.             SetDriveStatus
  416.         END IF
  417.         newopt$ = ""
  418.         GOTO CUSTINST
  419.     ELSEIF sz$ = "REACTIVATE" THEN
  420.         RecalcPath
  421.         SetDriveStatus
  422.         GOTO OPT3L1
  423.     ELSEIF sz$ = "EXIT" THEN
  424.         GOSUB ASKQUIT
  425.         GOTO OPT3L1
  426.     ELSE
  427.         UIPop 1
  428.         newopt$ = ""
  429.         GOTO CUSTINST
  430.     END IF
  431.  
  432. TOOBIG:
  433.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  434.     IF sz$ = "REACTIVATE" THEN
  435.         RecalcPath
  436.         SetDriveStatus
  437.         GOTO TOOBIG
  438.     END IF
  439.     UIPop 1
  440.     RETURN
  441.  
  442.  
  443.  
  444. BADPATH:
  445.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  446.     IF sz$ = "REACTIVATE" THEN
  447.         RecalcPath
  448.         SetDriveStatus
  449.         GOTO BADPATH
  450.     END IF
  451.     UIPop 1
  452.     RETURN
  453.  
  454.  
  455.  
  456. ASKQUIT:
  457.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  458.  
  459.     IF sz$ = "EXIT" THEN
  460.         UIPopAll
  461.         ERROR STFQUIT
  462.     ELSEIF sz$ = "REACTIVATE" THEN
  463.         GOTO ASKQUIT
  464.     ELSE
  465.         UIPop 1
  466.     END IF
  467.     RETURN
  468.  
  469.  
  470.  
  471. '**
  472. '** Purpose:
  473. '**     Adds the specified option files to the copy list.
  474. '** Arguments:
  475. '**     ftype%  - type of files to add, one of the following:
  476. '**             APPFILES, OPTFILES1, OPTFILES2
  477. '** Returns:
  478. '**     none.
  479. '*************************************************************************
  480. SUB AddOptFilesToCopyList (ftype%) STATIC
  481.  
  482.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  483.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  484.         IF ftype% = APPFILES THEN
  485.             AddSectionFilesToCopyList "baseFiles", SrcDir$, DEST$
  486.             AddSectionFilesToCopyList "datFiles", SrcDir$, MakePath(DEST$,"dat")
  487.             AddSectionFilesToCopyList "adminFiles", SrcDir$, MakePath(DEST$,"admin")
  488.             AddSectionFilesToCopyList "baseHelpFiles", SrcDir$, MakePath(DEST$,"Help")
  489.             AddSectionFilesToCopyList "reportFiles", SrcDir$, MakePath(DEST$,"rep")
  490.             AddSectionFilesToCopyList "documentFiles", SrcDir$, MakePath(DEST$,"document")
  491.             AddSectionFilesToCopyList "training", SrcDir$, MakePath(DEST$,"Training")
  492.         ELSEIF ftype% = OPTFILES1 THEN
  493.             AddSectionFilesToCopyList "helpFiles", SrcDir$, MakePath(DEST$,"Help")
  494.         ELSEIF ftype% = OPTFILES2 THEN
  495.             AddSectionFilesToCopyList "datFiles", SrcDir$, MakePath(DEST$,"Formsd")
  496.             AddSectionFilesToCopyList "persBase", SrcDir$, DEST$
  497.         ELSEIF ftype% = OPTFILES3 THEN
  498.             AddSectionFilesToCopyList "massMailing", SrcDir$, DEST$
  499.         END IF
  500.     END IF
  501.     IF GetListItem(INSTTYPE$, CLIENT) = "ON" THEN 
  502.             AddSectionFilesToCopyList "client", SrcDir$, DEST$
  503.       ELSE
  504.             AddSectionFilesToCopyList "server", SrcDir$, DEST$
  505.             
  506.     END IF
  507.     SrcDir$ = ""
  508.     
  509. END SUB
  510.  
  511.  
  512. '**
  513. '** Purpose:
  514. '**     Recalculates disk space for the given option files and sets
  515. '**     the status info symbol "StatusItemsText".
  516. '** Arguments:
  517. '**     ftype% - type of files to add, one of the following:
  518. '**             APPFILES, OPTFILES1, OPTFILES2
  519. '** Returns:
  520. '**     none.
  521. '*************************************************************************
  522. SUB RecalcOptFiles (ftype%) STATIC
  523.     CursorSave% = ShowWaitCursor()
  524.     ClearCopyList
  525.     AddOptFilesToCopyList ftype%
  526.  
  527.     fExtra% = 0
  528.     IF ftype% = APPFILES THEN
  529.         ListSym$ = APPNEEDS$
  530.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  531.             ''Add extra cost to Windows drive for ini/progman, etc.
  532.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  533.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  534.             fExtra% = 1
  535.         END IF
  536.     ELSEIF ftype% = OPTFILES1 THEN
  537.         ListSym$ = OPT1NEEDS$
  538.     ELSEIF ftype% = OPTFILES2 THEN
  539.         ListSym$ = OPT2NEEDS$
  540.     ELSEIF ftype% = OPTFILES3 THEN
  541.         ListSym$ = OPT3NEEDS$
  542.     END IF
  543.  
  544.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  545.  
  546.     cost& = 0
  547.     FOR i% = 1 TO 26 STEP 1
  548.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  549.     NEXT i%
  550.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  551.  
  552.     IF StillNeed& > 0 THEN
  553.         ReplaceListItem BIGLIST$, ftype%, "YES"
  554.     ELSE
  555.         ReplaceListItem BIGLIST$, ftype%, ""
  556.     END IF
  557.  
  558.     IF fExtra% THEN
  559.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  560.     END IF
  561.     RestoreCursor CursorSave%
  562.     ListSym$ = ""
  563. END SUB
  564.  
  565.  
  566. '**
  567. '** Purpose:
  568. '**     Recalculates disk space and sets option status info according
  569. '**     to the current destination path.
  570. '** Arguments:
  571. '**     none.
  572. '** Returns:
  573. '**     none.
  574. '*************************************************************************
  575. SUB RecalcPath STATIC
  576.  
  577.     CursorSave% = ShowWaitCursor()
  578.  
  579.     RecalcOptFiles APPFILES
  580.     RecalcOptFiles OPTFILES1
  581.     RecalcOptFiles OPTFILES2
  582.     RecalcOptFiles OPTFILES3
  583.  
  584.     RestoreCursor CursorSave%
  585. END SUB
  586.  
  587.  
  588. '**
  589. '** Purpose:
  590. '**     Sets drive status info according to latest disk space calcs.
  591. '** Arguments:
  592. '**     none.
  593. '** Returns:
  594. '**     none.
  595. '*************************************************************************
  596. SUB SetDriveStatus STATIC
  597.  
  598.     drive$ = MID$(DEST$, 1, 1)
  599.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  600.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))+ VAL(GetListItem(OPT3NEEDS$, ndrive%))
  601.     free& = GetFreeSpaceForDrive(drive$)
  602.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  603.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  604.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  605.  
  606.     IF drive$ = WINDRIVE$ THEN
  607.         ReplaceListItem DRIVETEXT$, 4, ""
  608.         ReplaceListItem DRIVETEXT$, 5, ""
  609.         ReplaceListItem DRIVETEXT$, 6, ""
  610.     ELSE
  611.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  612.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(OPT3NEEDS$, ndrive%))
  613.         IF cost& = 0 THEN
  614.             ReplaceListItem DRIVETEXT$, 4, ""
  615.             ReplaceListItem DRIVETEXT$, 5, ""
  616.             ReplaceListItem DRIVETEXT$, 6, ""
  617.         ELSE
  618.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  619.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  620.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  621.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  622.         END IF
  623.     END IF
  624. END SUB
  625.  
  626.  
  627. '**
  628. '** Purpose:
  629. '**     Appends a file name to the end of a directory path,
  630. '**     inserting a backslash character as needed.
  631. '** Arguments:
  632. '**     szDir$  - full directory path (with optional ending "\")
  633. '**     szFile$ - filename to append to directory
  634. '** Returns:
  635. '**     Resulting fully qualified path name.
  636. '*************************************************************************
  637. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  638.     IF szDir$ = "" THEN
  639.         MakePath = szFile$
  640.     ELSEIF szFile$ = "" THEN
  641.         MakePath = szDir$
  642.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  643.         MakePath = szDir$ + szFile$
  644.     ELSE
  645.         MakePath = szDir$ + "\" + szFile$
  646.     END IF
  647. END FUNCTION
  648.  
  649.